package com.supermarket.mapper;

import com.supermarket.entity.DTO.OrderItemDTO;
import com.supermarket.entity.OrderItem;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 订单商品明细Mapper接口
 */
@Mapper
public interface OrderItemMapper {
    /**
     * 批量插入订单商品明细
     * @param orderItems 订单商品明细列表
     * @return 影响行数
     */
    int batchInsertOrderItems(List<OrderItem> orderItems);
    
    /**
     * 插入单个订单商品明细
     * @param orderItem 订单商品明细
     * @return 影响行数
     */
    int insertOrderItem(OrderItem orderItem);
    
    /**
     * 更新订单商品明细
     * @param orderItem 订单商品明细
     * @return 影响行数
     */
    int updateOrderItem(OrderItem orderItem);
    
    /**
     * 根据ID查询订单商品明细
     * @param id 明细ID
     * @return 订单商品明细
     */
    OrderItemDTO selectOrderItemById(@Param("id") Integer id);
    
    /**
     * 根据订单ID查询订单商品明细列表
     * @param orderId 订单ID
     * @return 订单商品明细列表
     */
    List<OrderItemDTO> selectOrderItemsByOrderId(@Param("orderId") Integer orderId);
    
    /**
     * 根据商品ID查询包含该商品的所有订单明细
     * @param commodityId 商品ID
     * @return 订单商品明细列表
     */
    List<OrderItemDTO> selectOrderItemsByCommodityId(@Param("commodityId") Integer commodityId);
    
    /**
     * 删除订单商品明细
     * @param id 明细ID
     * @return 影响行数
     */
    int deleteOrderItem(@Param("id") Integer id);
    
    /**
     * 根据订单ID删除所有商品明细
     * @param orderId 订单ID
     * @return 影响行数
     */
    int deleteOrderItemsByOrderId(@Param("orderId") Integer orderId);
} 